সেশন (Session) এবং কুকিজ (Cookies) CodeIgniter এ ইউজারের ডেটা সংরক্ষণ এবং পরিচালনার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে। সেশন সাধারণত ইউজার-সর্বাধিক চলমান ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়, যেখানে কুকিজ ক্লায়েন্ট সাইডে ডেটা সংরক্ষণ করে।
CodeIgniter এ সেশন ম্যানেজমেন্টের জন্য বিল্ট-ইন লাইব্রেরি রয়েছে। এটি ইউজারের ডেটা সার্ভার-সাইডে সুরক্ষিতভাবে সংরক্ষণ করে।
ডিফল্ট কনফিগারেশন:
app/Config/App.php
ফাইল খুলুন।নিম্নলিখিত প্রপার্টি চেক বা সেট করুন:
public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'; // সেশন হ্যান্ডলার
public $sessionSavePath = WRITEPATH . 'session'; // সেশন ডেটা সংরক্ষণের পথ
$session = \Config\Services::session();
$session->set([
'user_id' => 123,
'username' => 'john_doe',
'is_logged_in' => true,
]);
echo $session->get('username'); // 'john_doe'
$data = $session->get(); // সমস্ত সেশন ডেটা অ্যারের আকারে রিটার্ন
print_r($data);
$session->remove('user_id'); // নির্দিষ্ট ডেটা ডিলিট
$session->destroy(); // সমস্ত সেশন ডেটা ডিলিট এবং সেশন বন্ধ
CodeIgniter-এ কুকিজ ক্লায়েন্ট সাইডে ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। এটি সাধারণত ডেটা স্টোরেজের জন্য সহজ এবং হালকা সমাধান।
কুকিজ সেট করার জন্য app/Config/App.php
ফাইলের $cookiePrefix
, $cookieDomain
, এবং $cookiePath
প্রপার্টিগুলো ব্যবহার করা হয়।
$cookie = [
'name' => 'username',
'value' => 'john_doe',
'expire' => 3600, // ১ ঘণ্টা
'secure' => false // HTTPS প্রয়োজন নেই
];
$response = \Config\Services::response();
$response->setCookie($cookie);
$request = \Config\Services::request();
echo $request->getCookie('username'); // 'john_doe'
$response->deleteCookie('username');
বৈশিষ্ট্য | সেশন | কুকিজ |
---|---|---|
ডেটা সংরক্ষণ স্থান | সার্ভার | ক্লায়েন্ট ব্রাউজার |
ডেটা সিকিউরিটি | বেশি সুরক্ষিত | কম সুরক্ষিত |
আকার সীমাবদ্ধতা | নির্ভর করে সার্ভারের কনফিগারেশনের উপর | সাধারণত ৪ কিলোবাইট |
মেয়াদকাল | সেশন শেষ হলে ডেটা মুছে যায় | নির্দিষ্ট সময় পর্যন্ত থাকে |
কখনো কখনো সেশন এবং কুকিজ একত্রে ব্যবহার করতে হতে পারে, যেমন:
// Remember Me ফাংশনালিটি
if ($request->getPost('remember_me')) {
$response->setCookie([
'name' => 'remember_token',
'value' => 'unique_token_here',
'expire' => 86400 * 30, // ৩০ দিনের মেয়াদ
]);
}
// লগইন চেক
if ($request->getCookie('remember_token')) {
// কুকি থেকে ইউজার যাচাই
}
সমাধান: নিশ্চিত করুন writable/session
ফোল্ডার রাইটেবল।
chmod -R 0777 writable/session
CodeIgniter-এ সেশন এবং কুকিজ ব্যবস্থাপনা সঠিকভাবে ব্যবহার করলে অ্যাপ্লিকেশনের কার্যক্ষমতা ও সিকিউরিটি বাড়ে। এটি ইউজারের তথ্য সুরক্ষিত এবং দীর্ঘমেয়াদি ব্যবস্থাপনার জন্য কার্যকর।
Session Management হলো ওয়েব অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীর ডেটা নির্দিষ্ট সময় পর্যন্ত সংরক্ষণ করে। CodeIgniter একটি বিল্ট-ইন Session Library সরবরাহ করে, যা ব্যবহারকারীর সেশন পরিচালনা করা সহজ করে তোলে।
CodeIgniter 4-এ Session লাইব্রেরি ডিফল্টভাবে লোড করা থাকে। আপনি সরাসরি session()
হেল্পার ফাংশন ব্যবহার করতে পারেন।
$session = session();
সেশন কনফিগারেশনটি app/Config/App.php
ফাইলে সংজ্ঞায়িত করা হয়।
public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler';
public $sessionCookieName = 'ci_session';
public $sessionExpiration = 7200; // সেকেন্ডে সময়
public $sessionSavePath = WRITEPATH . 'session';
public $sessionMatchIP = false;
public $sessionTimeToUpdate = 300;
public $sessionRegenerateDestroy = false;
$session = session();
$session->set('username', 'JohnDoe');
$session->set(['email' => 'johndoe@example.com', 'logged_in' => true]);
$session = session();
$username = $session->get('username'); // একক মান
$allData = $session->get(); // সমস্ত সেশন ডেটা
$session = session();
$session->remove('username'); // নির্দিষ্ট ডেটা মুছে ফেলা
$session = session();
$session->destroy(); // সমস্ত সেশন ধ্বংস
Flashdata হলো সেশন ডেটা, যা একবার রিড করার পরে স্বয়ংক্রিয়ভাবে মুছে যায়।
$session = session();
$session->setFlashdata('success', 'Your data has been saved!');
$session = session();
echo $session->getFlashdata('success');
Tempdata হলো সেশন ডেটা, যা নির্দিষ্ট সময় পর্যন্ত সক্রিয় থাকে।
$session = session();
$session->setTempdata('token', '123456', 300); // 300 সেকেন্ড বা ৫ মিনিট
$session = session();
echo $session->getTempdata('token');
$session = session();
$session->removeTempdata('token');
ডাটাবেস সেশন সংরক্ষণের জন্য একটি টেবিল তৈরি করতে হবে। উদাহরণ:
CREATE TABLE ci_sessions (
id VARCHAR(128) NOT NULL,
ip_address VARCHAR(45) NOT NULL,
timestamp INT(10) UNSIGNED DEFAULT 0 NOT NULL,
data BLOB NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);
app/Config/App.php
ফাইলে ডাটাবেস ড্রাইভার সেট করুন:
public $sessionDriver = 'CodeIgniter\Session\Handlers\DatabaseHandler';
public $sessionSavePath = 'ci_sessions'; // টেবিলের নাম
Session Regeneration: সেশন হাইজ্যাকিং প্রতিরোধের জন্য সেশন রিজেনারেট করুন:
$session = session();
$session->regenerate();
IP Address Match: সেশন কনফিগারেশনে sessionMatchIP
অপশন true
করে দিন:
public $sessionMatchIP = true;
HTTP Only Cookies: কনফিগার করুন যেন সেশন কুকিজ শুধুমাত্র HTTP এর মাধ্যমে অ্যাক্সেসযোগ্য হয়:
public $cookieHTTPOnly = true;
<?php
namespace App\Controllers;
class SessionExample extends BaseController {
public function index() {
$session = session();
$session->set('username', 'JohnDoe');
$session->setFlashdata('success', 'Welcome, JohnDoe!');
return view('session_view');
}
}
<?php if (session()->getFlashdata('success')): ?>
<div class="alert alert-success">
<?= session()->getFlashdata('success'); ?>
</div>
<?php endif; ?>
<p>Username: <?= session()->get('username'); ?></p>
CodeIgniter-এর Session Management ডেভেলপারদের সেশন ডেটা সংরক্ষণ, নিরাপত্তা নিশ্চিত করা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য একটি শক্তিশালী এবং সহজ পদ্ধতি প্রদান করে। Flashdata এবং Tempdata এর মতো ফিচার অ্যাপ্লিকেশনকে আরও কার্যকর করে তোলে।
CodeIgniter-এ কুকিজ (Cookies) ব্যবহার করে ডেটা সংরক্ষণ এবং পুনরুদ্ধার করা যায়। এটি সাধারণত ব্যবহারকারীর ব্রাউজারে ছোট ডেটা স্টোর করতে ব্যবহৃত হয়। CodeIgniter কুকিজ ম্যানেজমেন্টের জন্য একটি সহজ এবং কার্যকর পদ্ধতি প্রদান করে।
CodeIgniter-এ কুকিজ সেট করার জন্য আপনি response() অবজেক্ট ব্যবহার করতে পারেন।
$response = service('response');
$response->setCookie(
'user_name', // কুকির নাম
'John Doe', // কুকির মান
3600, // কুকির মেয়াদ (সেকেন্ডে)
'', // ডোমেইন (ডিফল্ট ব্রাউজার ডোমেইন)
'/', // পাথ (ডিফল্ট: রুট ডিরেক্টরি)
true, // HTTPOnly
true // Secure (https এর জন্য)
);
echo "Cookie Set Successfully!";
এখানে:
আপনার কন্ট্রোলারে এটি একটি HTTP রেসপন্সের অংশ হিসেবে পাঠানো হবে।
CodeIgniter-এ কুকি রিড করার জন্য আপনি request() অবজেক্ট ব্যবহার করতে পারেন।
$request = service('request');
// কুকি রিড করা
$userName = $request->getCookie('user_name');
if ($userName) {
echo "User Name: " . $userName;
} else {
echo "No Cookie Found!";
}
if ($request->getCookie('user_name')) {
echo "Cookie Exists!";
} else {
echo "Cookie Does Not Exist!";
}
কোনো কুকি মুছে ফেলার জন্য deleteCookie()
মেথড ব্যবহার করা হয়।
$response = service('response');
// কুকি ডিলিট
$response->deleteCookie('user_name');
echo "Cookie Deleted Successfully!";
CodeIgniter একই সাথে একাধিক কুকি সেট করতে পারে।
$response = service('response');
// প্রথম কুকি
$response->setCookie('user_name', 'John Doe', 3600);
// দ্বিতীয় কুকি
$response->setCookie('user_role', 'Admin', 3600);
echo "Multiple Cookies Set Successfully!";
true
থাকলে কুকি শুধুমাত্র HTTP প্রটোকলের মাধ্যমে অ্যাক্সেস করা যাবে (JavaScript থেকে নয়)।true
থাকলে কুকি শুধুমাত্র HTTPS প্রটোকলে পাঠানো হবে।0
সেট করা হয়, তবে এটি সেশন কুকি হিসেবে কাজ করবে।<?php
namespace App\Controllers;
class CookieController extends BaseController
{
public function setCookie()
{
$response = service('response');
$response->setCookie('user_name', 'John Doe', 3600, '/', '', true, true);
echo "Cookie Set Successfully!";
}
public function getCookie()
{
$request = service('request');
$userName = $request->getCookie('user_name');
echo $userName ? "User Name: " . $userName : "No Cookie Found!";
}
public function deleteCookie()
{
$response = service('response');
$response->deleteCookie('user_name');
echo "Cookie Deleted Successfully!";
}
}
F12
চাপুন।Ctrl + Shift + I
চাপুন।setCookie()
এবং রিড করার জন্য getCookie()
মেথড ব্যবহার করা হয়।deleteCookie()
মেথড ব্যবহার করুন।CodeIgniter-এর কুকিজ ম্যানেজমেন্ট সহজ এবং কার্যকর, যা ব্যবহারকারীর ডেটা স্টোর এবং রিড করার জন্য আদর্শ।
Flashdata হলো CodeIgniter-এ একটি সেশন ডেটা, যা শুধুমাত্র একটি পেজ লোড পর্যন্ত উপলব্ধ থাকে। সাধারণত এটি একটি রিকোয়েস্ট থেকে পরবর্তী রিকোয়েস্টে টেম্পোরারি মেসেজ পাঠানোর জন্য ব্যবহৃত হয়, যেমন:
Flashdata সেট করতে setFlashdata() মেথড ব্যবহার করা হয়।
session()->setFlashdata('success', 'Your form was submitted successfully!');
এখানে:
'success'
: Flashdata এর কী।'Your form was submitted successfully!'
: Flashdata এর মান।Flashdata রিড করার জন্য getFlashdata() মেথড ব্যবহার করা হয়।
if (session()->getFlashdata('success')) {
echo session()->getFlashdata('success');
}
এটি সেশন থেকে 'success'
কীর Flashdata রিড করে মেসেজ প্রদর্শন করবে।
app/Controllers/Form.php
:
<?php
namespace App\Controllers;
class Form extends BaseController
{
public function submit()
{
// ফর্ম প্রসেসিং লজিক
// সফল Flashdata সেট করা
session()->setFlashdata('success', 'Your data has been saved successfully!');
// রিডাইরেকশন
return redirect()->to('/form');
}
}
app/Views/form_view.php
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form</title>
</head>
<body>
<?php if (session()->getFlashdata('success')): ?>
<div class="alert alert-success">
<?php echo session()->getFlashdata('success'); ?>
</div>
<?php endif; ?>
<form action="/form/submit" method="post">
<button type="submit">Submit</button>
</form>
</body>
</html>
Flashdata সেট করার সময় একাধিক কী-মূল্য জোড়া সংরক্ষণ করতে পারেন।
session()->setFlashdata([
'success' => 'Data saved successfully!',
'error' => 'Something went wrong!'
]);
if (session()->getFlashdata('success')) {
echo session()->getFlashdata('success');
}
if (session()->getFlashdata('error')) {
echo session()->getFlashdata('error');
}
Flashdata চেক করার জন্য has() মেথড ব্যবহার করতে পারেন।
if (session()->has('success')) {
echo session()->getFlashdata('success');
}
Flashdata | Session Data |
---|---|
শুধুমাত্র একটি রিকোয়েস্ট পর্যন্ত উপলব্ধ। | স্থায়ীভাবে সেশন পর্যন্ত সংরক্ষণ করা হয়। |
স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। | ম্যানুয়ালি মুছে ফেলতে হয়। |
সাধারণত নোটিফিকেশন মেসেজের জন্য ব্যবহৃত হয়। | যেকোনো ধরণের ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। |
CodeIgniter-এ Flashdata ব্যবহার করে সহজে টেম্পোরারি মেসেজ পাস করা যায়। এটি ফর্ম সাবমিশন বা রিডাইরেকশনের পর ব্যবহারকারীদের তথ্য প্রদর্শন করার জন্য কার্যকর একটি টুল। এটি সেশন সিস্টেমের মাধ্যমে পরিচালিত হয় এবং খুব সহজেই অ্যাপ্লিকেশনের মধ্যে ইমপ্লিমেন্ট করা যায়।
CodeIgniter এ সেশন (Session) এবং কুকিজ (Cookies) ব্যবহৃত হয় ব্যবহারকারীর তথ্য সংরক্ষণ ও পরিচালনার জন্য। সেশন এবং কুকিজ সঠিকভাবে সিকিউর না হলে নিরাপত্তাজনিত ঝুঁকি তৈরি হতে পারে। CodeIgniter এর বিল্ট-ইন টুলস ব্যবহার করে সেশন এবং কুকিজ সিকিউর করা যায়।
Session হলো একটি ব্যবহারকারীর তথ্য সাময়িকভাবে সার্ভারে সংরক্ষণ করার একটি পদ্ধতি। এটি সাধারণত একটি সেশন আইডি ব্যবহার করে ব্যবহারকারীকে শনাক্ত করে।
CodeIgniter এ সেশন কনফিগারেশন app/Config/App.php
ফাইলে করা হয়।
$sessionDriver
, $sessionCookieName
, $sessionSavePath
, এবং $sessionExpiration
গুরুত্বপূর্ণ কনফিগারেশন প্যারামিটার।
public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler';
public $sessionCookieName = 'ci_session';
public $sessionSavePath = WRITEPATH . 'session';
public $sessionExpiration = 7200; // সেশনের মেয়াদ (সেকেন্ডে)
public $sessionMatchIP = false; // আইপি মিলানোর জন্য
public $sessionTimeToUpdate = 300; // সেশন আইডি আপডেটের সময়
public $sessionRegenerateDestroy = false;
HTTPOnly কুকিজ ব্যবহার করুন: সেশন কুকিজ জাভাস্ক্রিপ্ট থেকে অ্যাক্সেস বন্ধ করতে:
public $cookieSecure = true;
আইপি মিলান সক্রিয় করুন: প্রতিটি সেশনের জন্য ব্যবহারকারীর আইপি নিশ্চিত করতে:
public $sessionMatchIP = true;
Controller এ session()
হেল্পার ব্যবহার করে সেশন ডেটা সেট করা যায়:
$session = session();
$session->set('user_id', 123);
$session->set('user_email', 'user@example.com');
$session = session();
$userId = $session->get('user_id');
$userEmail = $session->get('user_email');
একটি নির্দিষ্ট ডেটা মুছে ফেলার জন্য:
$session->remove('user_id');
সকল সেশন ডেটা মুছে ফেলার জন্য:
$session->destroy();
Cookie হলো একটি ছোট ফাইল যা ব্রাউজারের মাধ্যমে ব্যবহারকারীর ডিভাইসে সংরক্ষণ করা হয়। এটি সাধারণত ব্যবহারকারীর পছন্দ এবং লগইন তথ্য সংরক্ষণ করতে ব্যবহৃত হয়।
CodeIgniter এ কুকিজ কনফিগারেশন app/Config/App.php
ফাইলে করা হয়।
public $cookiePrefix = ''; // কুকিজের জন্য প্রিফিক্স
public $cookieDomain = ''; // ডোমেইন যেখানে কুকিজ প্রযোজ্য
public $cookiePath = '/'; // কুকিজ প্রযোজ্য পথ
public $cookieSecure = true; // শুধুমাত্র HTTPS এর জন্য কুকিজ
public $cookieHTTPOnly = true; // জাভাস্ক্রিপ্ট থেকে কুকিজ অ্যাক্সেস নিষিদ্ধ
setcookie()
ফাংশন ব্যবহার করে কুকিজ সেট করা যায়:
$cookie = [
'name' => 'user_preference',
'value' => 'dark_mode',
'expire' => 3600, // ১ ঘণ্টা
'path' => '/',
'secure' => true,
'httponly' => true,
];
setcookie($cookie['name'], $cookie['value'], $cookie['expire'], $cookie['path'], '', $cookie['secure'], $cookie['httponly']);
$cookieValue = $_COOKIE['user_preference'] ?? null;
setcookie('user_preference', '', time() - 3600, '/');
cookieSecure
কনফিগারেশন সক্রিয় রাখুন।HTTPOnly কুকিজ: কুকিজকে শুধুমাত্র HTTP প্রোটোকলের মাধ্যমে অ্যাক্সেসযোগ্য করে তুলুন:
public $cookieHTTPOnly = true;
সেশন আইডি পুনর্জন্ম: প্রতিবার লগইন বা গুরুত্বপূর্ণ কাজের সময় সেশন আইডি পুনর্জন্ম করুন:
session()->regenerate();
CodeIgniter এ সেশন এবং কুকিজ পরিচালনা নিরাপত্তার জন্য অত্যন্ত গুরুত্বপূর্ণ। সঠিক কনফিগারেশন এবং সেরা চর্চা অনুসরণ করলে ডেটা চুরি এবং নিরাপত্তা ঝুঁকি প্রতিরোধ করা যায়। সেশন এবং কুকিজ সিকিউর করার জন্য CodeIgniter এর বিল্ট-ইন কনফিগারেশন এবং টুলগুলো যথেষ্ট কার্যকর।
Read more